Computer networking is an integral part to modern computing systems. Computer networking involves a collection of hardware and software to transfer information from one device to another. Generally, devices include network interface controllers (NICs) to simplify low-level communications across a physical medium, such as radio frequencies (RF), light, fiber optic cables, electrically conductive cables, etc. Ethernet NICs are a popular choice to implement communications between devices.
Traditional ethernet control interfaces include a multi-step process to transmit a packet. Generally, a central processing unit (CPU) or other processing circuitry of a host device begins by constructing a packet descriptor and a payload, storing each in memory. The CPU then initiates the packet transmission via a message to the NIC (e.g., using a mapped-memory input/output (MMIO) write). The NIC then retrieves a packet descriptor from memory. The packet descriptor includes control information for the NIC, such as a source and a destination media access control (MAC) address, an EtherType field—giving either the protocol type for the payload protocol or the length of the payload—and a location in memory of the payload. The memory location of the payload is used by the NIC to then retrieve the payload. The NIC constructs the packet (e.g., including the frame), and transmits the packet.